package modulos.usuario.vista;

import basedatos.OperacionesBD;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import modulos.usuario.modelo.Cuenta_Usuario;
import modelo.Persona;
import modulos.usuario.modelo.Usuario;
import vista.modelo.OperacionesVarias;

/**
 *
 * @author caesar
 */
public class iFrmLstUsuarios extends javax.swing.JInternalFrame {

    Cuenta_Usuario eCuenta_usuario = new Cuenta_Usuario();
    Cuenta_Usuario findCuenta_Usuario = new Cuenta_Usuario();
    Usuario findUsuario = new Usuario();
    Persona findPersona = new Persona();
    private DefaultTableModel tablaModelo;
    
    
    

    public iFrmLstUsuarios() {
        tablaModelo = new DefaultTableModel();
        tablaModelo.addColumn("CUENTA NRO");
        tablaModelo.addColumn("USUARIO");
        tablaModelo.addColumn("TIPO");
        
     
        
        
        initComponents();
        OperacionesVarias.cerrarVentanaEscape(this);
        showUsuarios();
        
       dgUsuarios.getColumnModel().getColumn(0).setPreferredWidth(0);
       dgUsuarios.getColumnModel().getColumn(1).setPreferredWidth(210);
       dgUsuarios.getColumnModel().getColumn(2).setPreferredWidth(40);
       dgUsuarios.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btnCerrar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        dgUsuarios = new javax.swing.JTable();
        lblmsg = new javax.swing.JLabel();
        btnEliminar = new javax.swing.JButton();

        setClosable(true);
        setTitle("Lista de usuarios:");
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/usuarios.png"))); // NOI18N
        setVisible(true);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        btnCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/agt_home.png"))); // NOI18N
        btnCerrar.setText("Cerrar");
        btnCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCerrarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCerrar, new org.netbeans.lib.awtextra.AbsoluteConstraints(471, 273, 101, -1));

        dgUsuarios.setAutoCreateRowSorter(true);
        dgUsuarios.setBackground(new java.awt.Color(209, 230, 239));
        dgUsuarios.setModel(tablaModelo);
        dgUsuarios.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                dgUsuariosKeyReleased(evt);
            }
        });
        jScrollPane1.setViewportView(dgUsuarios);

        getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 23, 560, 232));

        lblmsg.setText(".");
        getContentPane().add(lblmsg, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 311, 22, -1));

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/delete_user.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        getContentPane().add(btnEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 270, 100, -1));

        getAccessibleContext().setAccessibleParent(this);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void showUsuarios() {
        List lsCtaUsr = null;
        try {
            int c = tablaModelo.getRowCount();
            for (int i = 0; i < c; i++) {
                tablaModelo.removeRow(0);
            }
       
       
            dgUsuarios.setEnabled(false);
            dgUsuarios.setEnabled(true);

            lsCtaUsr = (List) eCuenta_usuario.selectUsuario();
            for (Cuenta_Usuario cu : (List<Cuenta_Usuario>) lsCtaUsr) {
                Object[] fila = {
                    cu.getId(), cu.getNomUsuario(), cu.getTipo()
                };
                tablaModelo.addRow(fila);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se ha producido la excepcion:\n" + ex.getMessage(), "Listar usuarios", JOptionPane.ERROR_MESSAGE);
        }
    }

    private String buscarUsuario(String cedula, String usuario) {//Campo cedula no utilizada en este metodo
        List<Object[]> obj = null;
        String encontrado = null;
        try {
            if (usuario != null) {
                obj = eCuenta_usuario.selectAtributosUsuario(usuario);
            } else if (cedula != null) {
                obj = eCuenta_usuario.selectAtributosUsuario(cedula);
            }
            if (obj.size() > 0) {
                for (Object[] o : obj) {
                    findCuenta_Usuario = (Cuenta_Usuario) o[0];
                    findUsuario = (Usuario) o[1];
                    findPersona = (Persona) o[2];
                    //lbltxtIdUsuario.setText(String.valueOf(findCuenta_Usuario.getId()));
                    ////////////////////////////
                    encontrado = "OK";
                }
            } else {
                obj = null;
                //setNuevoUsuario();
                JOptionPane.showMessageDialog(null, "Los datos del usuario solicitado no existen ...", "Buscar", JOptionPane.WARNING_MESSAGE);
                encontrado = null;
            }
        } catch (Exception ex) {
            ex.getMessage();
            return null;
        }
        return encontrado;
    }

    private void eliminarUsuario() {
        try {
            if (dgUsuarios.getSelectedRow() != -1) {
                String celdaUsr = dgUsuarios.getValueAt(dgUsuarios.getSelectedRow(), 1).toString();//col1 = usuario

                if (buscarUsuario(null, celdaUsr) != null) {
                    if (findUsuario.getCedula().trim().equalsIgnoreCase("0000000000".trim()))//cedula de usr x defecto
                    {
                        JOptionPane.showMessageDialog(null, "El usuario administrador principal no puede ser eliminado", "Eliminar", JOptionPane.WARNING_MESSAGE);
                        return;
                    }
                    if (JOptionPane.showConfirmDialog(null, "El usuario: '" + findCuenta_Usuario.getNomUsuario() + "' será eliminado \n¿Desea continuar?", "Suprimir", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                        if (OperacionesBD.eliminar(findCuenta_Usuario)) {
                            showUsuarios();
                            JOptionPane.showMessageDialog(null, "El usuario seleccionado ha sido eliminado correctamente ...", "Eliminar", JOptionPane.INFORMATION_MESSAGE);
                        } else {
                            JOptionPane.showMessageDialog(null, "El usuario seleccionado no se ha podido eliminar...!", "Eliminar", JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "Aún no ha seleccionado un usuario para realizar la eliminación...", "Eliminar", JOptionPane.WARNING_MESSAGE);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "El usuario seleccionado ha sido eliminado correctamente ...", "Eliminar", JOptionPane.INFORMATION_MESSAGE);
            ex.getMessage();
        }
    }

    private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCerrarActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnCerrarActionPerformed

    private void dgUsuariosKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_dgUsuariosKeyReleased
        if (evt.getKeyCode() == 127) {
            eliminarUsuario();
        }
    }//GEN-LAST:event_dgUsuariosKeyReleased

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        eliminarUsuario();
    }//GEN-LAST:event_btnEliminarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCerrar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JTable dgUsuarios;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblmsg;
    // End of variables declaration//GEN-END:variables
}
